<!DOCTYPE html>
<html lang="en-us">
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    
<meta charset="UTF-8">
<title>Setting JVM options | Elasticsearch Guide [7.7] | Elastic</title>
<link rel="home" href="index.html" title="Elasticsearch Guide [7.7]">
<link rel="up" href="settings.html" title="Configuring Elasticsearch">
<link rel="prev" href="settings.html" title="Configuring Elasticsearch">
<link rel="next" href="secure-settings.html" title="Secure settings">
<meta name="DC.type" content="Learn/Docs/Elasticsearch/Reference/7.7">
<meta name="DC.subject" content="Elasticsearch">
<meta name="DC.identifier" content="7.7">
<meta name="robots" content="noindex,nofollow">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.optimizely.com/js/18132920325.js"></script>
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
    <link rel="manifest" href="/manifest.json">
    <meta name="apple-mobile-web-app-title" content="Elastic">
    <meta name="application-name" content="Elastic">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="/mstile-144x144.png">
    <meta name="theme-color" content="#ffffff">
    <meta name="naver-site-verification" content="936882c1853b701b3cef3721758d80535413dbfd">
    <meta name="yandex-verification" content="d8a47e95d0972434">
    <meta name="localized" content="true">
    <meta name="st:robots" content="follow,index">
    <meta property="og:image" content="https://www.elastic.co/static/images/elastic-logo-200.png">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="apple-touch-icon-precomposed" sizes="64x64" href="/favicon_64x64_16bit.png">
    <link rel="apple-touch-icon-precomposed" sizes="32x32" href="/favicon_32x32.png">
    <link rel="apple-touch-icon-precomposed" sizes="16x16" href="/favicon_16x16.png">
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <link rel="stylesheet" type="text/css" href="/guide/static/styles.css">
  </head>

  <!--© 2015-2021 Elasticsearch B.V. Copying, publishing and/or distributing without written permission is strictly prohibited.-->

  <body>
    <!-- Google Tag Manager -->
    <script>dataLayer = [];</script><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-58RLH5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-58RLH5');</script>
    <!-- End Google Tag Manager -->

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-12395217-16"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-12395217-16');
    </script>

    <!--BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET-->
    <script type="text/javascript">
      (function(){var g=function(e,h,f,g){
      this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};
      this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "};
      this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0};
      this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}};
      this.start=function(){var a=this;window.addEventListener?window.addEventListener("load",function(){a.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){a.go()})}};
      try{(new g(100,"r","QSI_S_ZN_emkP0oSe9Qrn7kF","https://znemkp0ose9qrn7kf-elastic.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_emkP0oSe9Qrn7kF")).start()}catch(i){}})();
    </script><div id="ZN_emkP0oSe9Qrn7kF"><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>
    <!--END WEBSITE FEEDBACK SNIPPET-->

    <div id="elastic-nav" style="display:none;"></div>
    <script src="https://www.elastic.co/elastic-nav.js"></script>

    <!-- Subnav -->
    <div>
      <div>
        <div class="tertiary-nav d-none d-md-block">
          <div class="container">
            <div class="p-t-b-15 d-flex justify-content-between nav-container">
              <div class="breadcrum-wrapper"><span><a href="/guide/" style="font-size: 14px; font-weight: 600; color: #000;">Docs</a></span></div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="main-container">
      <section id="content">
        <div class="content-wrapper">

          <section id="guide" lang="en">
            <div class="container">
              <div class="row">
                <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                  <!-- start body -->
                  <div class="page_header">
<strong>IMPORTANT</strong>: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
<a href="../current/index.html">current release documentation</a>.
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch Guide [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="setup.html">Set up Elasticsearch</a></span>
»
<span class="breadcrumb-link"><a href="settings.html">Configuring Elasticsearch</a></span>
»
<span class="breadcrumb-node">Setting JVM options</span>
</div>
<div class="navheader">
<span class="prev">
<a href="settings.html">« Configuring Elasticsearch</a>
</span>
<span class="next">
<a href="secure-settings.html">Secure settings »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="jvm-options"></a>Setting JVM options<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/setup/jvm-options.asciidoc">edit</a>
</h2>
</div></div></div>
<p>You should rarely need to change Java Virtual Machine (JVM) options. If you do,
the most likely change is setting the <a class="xref" href="heap-size.html" title="Setting the heap size">heap size</a>. The remainder of
this document explains in detail how to set JVM options. You can set options
either with <code class="literal">jvm.options</code> files or with the <code class="literal">ES_JAVA_OPTS</code> environment variable.</p>
<p>The preferred method of setting or overriding JVM options is via JVM options
files. When installing from the tar or zip distributions, the root <code class="literal">jvm.options</code>
configuration file is <code class="literal">config/jvm.options</code> and custom JVM options files can be
added to <code class="literal">config/jvm.options.d/</code>. When installing from the Debian or RPM
packages, the root <code class="literal">jvm.options</code> configuration file is
<code class="literal">/etc/elasticsearch/jvm.options</code> and custom JVM options files can be added to
<code class="literal">/etc/elasticsearch/jvm.options.d/</code>. When using the <a class="xref" href="docker.html" title="Install Elasticsearch with Docker">Docker
distribution of Elasticsearch</a> you can bind mount custom JVM options files into
<code class="literal">/usr/share/elasticsearch/config/jvm.options.d/</code>. You should never need to
modify the root <code class="literal">jvm.options</code> file instead preferring to use custom JVM options
files. The processing ordering of custom JVM options is lexicographic.</p>
<p>JVM options files must have the suffix <em>.options</em> and contain a line-delimited
list of JVM arguments following a special syntax:</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
lines consisting of whitespace only are ignored
</li>
<li class="listitem">
<p>lines beginning with <code class="literal">#</code> are treated as comments and are ignored</p>
<div class="pre_wrapper lang-text">
<pre class="programlisting prettyprint lang-text"># this is a comment</pre>
</div>
</li>
<li class="listitem">
<p>lines beginning with a <code class="literal">-</code> are treated as a JVM option that applies
independent of the version of the JVM</p>
<div class="pre_wrapper lang-text">
<pre class="programlisting prettyprint lang-text">-Xmx2g</pre>
</div>
</li>
<li class="listitem">
<p>lines beginning with a number followed by a <code class="literal">:</code> followed by a <code class="literal">-</code> are treated
as a JVM option that applies only if the version of the JVM matches the number</p>
<div class="pre_wrapper lang-text">
<pre class="programlisting prettyprint lang-text">8:-Xmx2g</pre>
</div>
</li>
<li class="listitem">
<p>lines beginning with a number followed by a <code class="literal">-</code> followed by a <code class="literal">:</code> are treated
as a JVM option that applies only if the version of the JVM is greater than or
equal to the number</p>
<div class="pre_wrapper lang-text">
<pre class="programlisting prettyprint lang-text">8-:-Xmx2g</pre>
</div>
</li>
<li class="listitem">
<p>lines beginning with a number followed by a <code class="literal">-</code> followed by a number followed
by a <code class="literal">:</code> are treated as a JVM option that applies only if the version of the
JVM falls in the range of the two numbers</p>
<div class="pre_wrapper lang-text">
<pre class="programlisting prettyprint lang-text">8-9:-Xmx2g</pre>
</div>
</li>
<li class="listitem">
all other lines are rejected
</li>
</ul>
</div>
<p>An alternative mechanism for setting Java Virtual Machine options is via the
<code class="literal">ES_JAVA_OPTS</code> environment variable. For instance:</p>
<div class="pre_wrapper lang-sh">
<pre class="programlisting prettyprint lang-sh">export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"
./bin/elasticsearch</pre>
</div>
<p>When using the RPM or Debian packages, <code class="literal">ES_JAVA_OPTS</code> can be specified in the
<a class="xref" href="setting-system-settings.html#sysconfig" title="Sysconfig file">system configuration file</a>.</p>
<p>The JVM has a built-in mechanism for observing the <code class="literal">JAVA_TOOL_OPTIONS</code>
environment variable. We intentionally ignore this environment variable in our
packaging scripts. The primary reason for this is that on some OS (e.g., Ubuntu)
there are agents installed by default via this environment variable that we do
not want interfering with Elasticsearch.</p>
<p>Additionally, some other Java programs support the <code class="literal">JAVA_OPTS</code> environment
variable. This is <span class="strong strong"><strong>not</strong></span> a mechanism built into the JVM but instead a convention
in the ecosystem. However, we do not support this environment variable, instead
supporting setting JVM options via the <code class="literal">jvm.options</code> file or the environment
variable <code class="literal">ES_JAVA_OPTS</code> as above.</p>
</div>
<div class="navfooter">
<span class="prev">
<a href="settings.html">« Configuring Elasticsearch</a>
</span>
<span class="next">
<a href="secure-settings.html">Secure settings »</a>
</span>
</div>
</div>

                  <!-- end body -->
                </div>
                <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                  <div id="rtpcontainer" style="display: block;">
                    <div class="mktg-promo">
                      <h3>Most Popular</h3>
                      <ul class="icons">
                        <li class="icon-elasticsearch-white"><a href="https://www.elastic.co/webinars/getting-started-elasticsearch?baymax=default&amp;elektra=docs&amp;storm=top-video">Get Started with Elasticsearch: Video</a></li>
                        <li class="icon-kibana-white"><a href="https://www.elastic.co/webinars/getting-started-kibana?baymax=default&amp;elektra=docs&amp;storm=top-video">Intro to Kibana: Video</a></li>
                        <li class="icon-logstash-white"><a href="https://www.elastic.co/webinars/introduction-elk-stack?baymax=default&amp;elektra=docs&amp;storm=top-video">ELK for Logs &amp; Metrics: Video</a></li>
                      </ul>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </section>

        </div>


<div id="elastic-footer"></div>
<script src="https://www.elastic.co/elastic-footer.js"></script>
<!-- Footer Section end-->

      </section>
    </div>

<script src="/guide/static/jquery.js"></script>
<script type="text/javascript" src="/guide/static/docs.js"></script>
<script type="text/javascript">
  window.initial_state = {}</script>
  </body>
</html>
